export default {
    data() {
        return {
            active: 0,
            tabList: [
                {
                    label: '',
                    loading: false,
                    finished: false,
					error: false,
                    empty: false,
                    page: 1,
                    list: [],
					type: null
                }
            ],
            params: {
                page: 1,
                size: 20,
                order: '',
                sort: 'desc',
            },
			contentText: {
				contentdown: '上拉显示更多哦~',
				contentrefresh: "正在拼命加载中...",
				contentnomore: "我是有底线的~"
			},
            pagination: {},
            service: null,
            isShowSticky: false, // 是否显示吸顶
            isShowScrollTop: false, // 是否显示一键置顶
        };
    },
    methods: {
        // 加载数据
        async loadMore(item, operate) {
            // 从页面传入自定义处理方式
            if (!item.empty && !item.finished) {
                this.params.page = item.page;
				
				// 加载前参数处理
				if (this.beforeLoader) {
					await this.beforeLoader(item);
				}

                item.loading = true;
                // 触发高度更新
                if (this.$refs.tabs) {
                    this.$refs.tabs.doLayout();
                }

                let res = await this.service;
                item.list = item.list.concat(res.list);
                if (res.subData) {
                    item.subData = res.subData;
                }
                this.pagination = res.pagination;
                // 加载状态结束
                item.loading = false;
                uni.hideLoading();
                item.page += 1;

                // 刷新列表
                if (operate === 'pullDown') {
                    uni.stopPullDownRefresh();
					
					uni.showToast({
						title: '刷新成功',
						icon: 'none',
						duration: 3000
					});
                }

                item.loading = false;

                // 暂无数据
                if (item.list.length === 0) {
                    item.empty = true;
                    item.page = 1;
                } else if (item.list.length >= res.pagination.total) {
                    // 数据全部加载完成
                    item.finished = true;
                }
                // 触发高度更新
                if (this.$refs.tabs) {
                    this.$refs.tabs.doLayout();
                }

                // 加载完后操作
                if (this.afterLoader) {
                    this.afterLoader();
                }
            }
        },
        // 刷新
        onRefresh(item, operate) {
            item.list = [];
            item.loading = true;
            item.finished = false;
            item.empty = false;
            item.page = 1;
            this.loadMore(item, operate);
        },
        // 切换加载
        tabChange(index, top) {
            // 触发高度更新
            if (this.$refs.tabs) {
                this.$refs.tabs.doLayout();
            }
            uni.pageScrollTo({
                scrollTop: top || 0,
                duration: 0
            });
            this.active = index;
            if (this.tabList[index].list.length === 0) {
                this.loadMore(this.tabList[index]);
            }
        },
        // 回到顶部
        backTop() {
            uni.pageScrollTo({
                scrollTop: 0,
                duration: 0
            });
        }
    },
	// 页面滑动监听
    onPageScroll(e) {
		if (e.scrollTop > 112) {
			this.isShowSticky = true;
		} else {
			this.isShowSticky = false;
		}
        if (e.scrollTop > 340) {
            this.isShowScrollTop = true;
        } else {
            this.isShowScrollTop = false;
        }
    },
    // 下拉刷新
    onPullDownRefresh() {
        this.onRefresh(this.tabList[this.active], 'pullDown');
    },
    // 上拉加载
    onReachBottom() {
        if (!this.tabList[this.active].loading) {
            this.loadMore(this.tabList[this.active]);
        }
    }
};
